import Api from '@/services/api.js'
const app = getApp();
import { isVideo } from '@/utils/utils';
export default {
  props: {
    // 初始/回显
    imgList: {
      type: Array,
      default: [],
    },
    // 限制选择数量
    limit: {
      type: Number,
      default: 1,
    },
    // 文件类型
    mediaType: {
      type: Array,
      default: ['image']
    },
    // 图片和视频选择来源
    sourceType: {
      ype: Array,
      default: ['album']
    }
  },
  data() {
    return {
      count: 1, // 图片最大选择数量
      newMediaType: ['image'],
      defaultImg: 'https://ltcx-img.oss-cn-beijing.aliyuncs.com/miniprogram/common/uploadDefault.png',
      imgs: [],
    }
  },
  watch: {
    imgList(val) {
      if (val) {
        if (isVideo(val[0])) 
          this.newMediaType = ['video'];
        this.imgs = val.concat([this.defaultImg]);
      }
    },
    limit: {
      immediate: true,
      handler(val) {
        if (val) this.count = val;
      }
    },
    mediaType: {
      immediate: true,
      handler(val) {
        if (val && val.length)
          this.newMediaType = val;
      }
    }
  },
  mounted() {
    if (!this.imgs.length)
      this.imgs.push(this.defaultImg)
  },
  methods: {
    // 选择文件
    chooseMedia(e) {
      const { index } = e.currentTarget.dataset;
      uni.chooseMedia({
        count: this.count,
        mediaType: this.newMediaType,
        sourceType: this.sourceType,
        success: async (res) => {
          const { tempFilePath } = res.tempFiles[0];
          // const typeArr = tempFilePath.split('.');
          /**
           * 因为选择的不是图片就是视频
           * 如果选择的视频 就只能传一个 需要将最大选择数量重置为1
           * TODO  图片类型需要补充
           */
          // if (!['png', 'jpg', 'jpeg'].includes(typeArr[1])) {
          if (isVideo(tempFilePath)) {
            this.count = 1;
            this.newMediaType = ['video'];
          } else {
            this.count = this.limit;
            this.newMediaType = ['image'];
          }
          const { suc, result } = await this.$upload({ filePath: tempFilePath });
          if (suc) {
            // 如果当前点击的角标小于最大选择数量 则替换 反之则新增
            if (this.imgs[index] != this.defaultImg) {
              this.imgs.splice(index, 1, result);
              return
            }
            this.imgs.unshift(result);
          }
        },
        fail: err => {
          console.log('err===>', err);
        }
      })
    },
    // 删除图片
    handleDelete(e) {
      const { index } = e.currentTarget.dataset;
      this.imgs.splice(index, 1);
      // 图片数组没有数据 或者第一条数据为默认图片
      if (!this.imgs.length || this.imgs[0] == this.defaultImg)
        this.resetImgs();
    },
    // 重置初始图片数组
    resetImgs() {
      this.imgs = [this.defaultImg];
      this.newMediaType = this.mediaType;
      this.count = this.limit;
    },
    // 选择完成的图片
    choosedImgs() {
      // 相当于深拷贝一次
      const imgs = [...this.imgs];
      if (imgs.at(-1)) {
        imgs.pop();
      }
      return imgs;
    }
  }
}